import pymysql
import sqlite3
import os
from typing import Optional
from log_Action import LogModel


log = LogModel(address="db").get_log()


class CreateDb(object):
    '''
    该类主要为创造使用数据
    '''
    def __init__(self, address: Optional[str] = 'db') -> None:
        if not os.path.exists("../conf/%s.db" % address):
            log.info("数据库不存在，正在创建%s数据库" % address)
            self.db = sqlite3.connect("../conf/%s.db" % address)
            self.conser = self.db.cursor()
        else:
            log.info("数据库%s已存在" % address)

    def create_teble(self, statement: Optional[str]):
        '''
        :param statement: 创建表的语句
        :return: NONE
        '''
        try:
            log.info("表创建语句为：%s" % statement)
            self.conser.execute(statement)
        except:
            log.error("表创建失败，请检测原因")
            raise "数据库创建失败，请检测原因"

    def create_data(self, number: Optional[int], statement: Optional[str]):
        '''
        :param number: 需要多少组数据
        :param statement: 创建语句，在有需要变化的地方增加{}，默认由for 创建不同编号
        :return:
        '''
        for i in range(number):
            self.conser.execute(statement.format(i))

    def get_date(self, statement: Optional[str]) -> list:
        '''
        :param statement:获取数据的语句
        :return: 数据
        '''
        self.conser.execute(statement)
        return self.conser.fetchall()

    def alter_date(self, statement: Optional[str]):
        self.conser.execute(statement)






